//- Copyright (c) 2016 Lucky Byte, Inc.
extends ../../layout

mixin table_row(index, means, allow, allow_char, notes)
  tr
    td.collapsing.center.aligned= index
    td.collapsing.center.aligned= means
    td.collapsing.center.aligned
      code= allow
    td.collapsing.center.aligned
      code= allow_char
    td= notes

mixin table_row2(char, means)
  tr
    td.collapsing.center.aligned
      code= char
    td= means

mixin table_row3(express, means)
  tr
    td.collapsing
      code= express
    td= means

block content
  form.ui.attached.segment.main

    button.ui.green.left.icon.labeled.button.right.floated(type="button"
      onclick="window.history.back()") 返 回
      i.icon.left.arrow

    h4.ui.dividing.header Cron 表达式说明

    p
      em Cron 表达式来源于 UNIX 系统，因此可以参考 crontab 的手册，下面是一些简单的说明。
    p Cron 表达式能够指定复杂的时间组合，例如 '每个星期五的早上 8 点' 或者
      | '每个月的最后一个星期五的下午 1:30'。
    p Cron 表达式由 6 个必须的字段和 1 个可选的字段组成，通过空白分隔，
      | 下面描述各字段的含义：

    table.ui.table.basic.celled
      thead
        th.collapsing 位置
        th.collapsing 含义
        th.collapsing 允许的值
        th.collapsing 允许的特殊字符
        th 备注
      tbody
        +table_row(1, '秒', '0-59', ', - * /')
        +table_row(2, '分', '0-59', ', - * /')
        +table_row(3, '时', '0-23', ', - * /')
        +table_row(4, '日', '1-31', ', - * ? / L W')
        +table_row(5, '月', '1-12 或 JAN-DEC', ', - * /')
        +table_row(6, '星期', '1-7 或 SUN-SAT', ', - * ? / L #')
        +table_row(7, '年', '空 或 1970-2199', ', - * /', '可选, 若为空，表示全部时间范围')
  
    p 特殊字符的含义见下表：

    table.ui.table.basic.celled
      thead
        th.collapsing 字符
        th 含义
      tbody
        +table_row2('*', '通配符，任意值')
        +table_row2('?', '无特定值。通常和其他指定的值一起使用，表示必须显示该值但不能检查')
        +table_row2('-', '范围。例如小时部分 10-12 表示 10:00，11:00， 12:00')
        +table_row2(',', '列分隔符。可以让你指定一系列的值。例如在星期域中指定 MON、TUE 和 WED')
        +table_row2('/', '增量。表示一个值的增量，例如分钟域中 0/1 表示从 0 开始，每次增加 1 分钟')
        +table_row2('L', '表示Last。它在日期和星期域中表示有所不同。在日期域中，表示这个月的最后一天，' +
          '而在星期域中，它永远是 7（星期六）。当你希望使用星期中某一天时，L 字符非常有用。' +
          '例如星期域中 6L 表示每一个月的最后一个星期五')
        +table_row2('W', '在本月内离当天最近的工作日触发，所谓的最近工作日，即当天到工作日的前后最短距离，' +
          '如果当天即为工作日，则距离是0；所谓本月内指的是不能跨月取到最近工作日，' +
          '即使前/后月份的最后一天/第一天确实满足最近工作日。' +
          '例如 LW 表示本月的最后一个工作日触发，W 强烈依赖月份')
        +table_row2('#', '表示该月的第几个星期，例如 1#2 表示每一个月的第二个星期一')

    h4.ui.dividing.header Cron 表达式举例

    table.ui.table.very.basic
      tbody
        +table_row3('30 * * * * ?', '每半分钟触发任务')
        +table_row3('30 10 * * * ?', '每小时的10分30秒触发任务')
        +table_row3('30 10 1 * * ?', '每天1点10分30秒触发任务')
        +table_row3('30 10 1 20 * ?', '每月20号1点10分30秒触发任务')
        +table_row3('30 10 1 20 10 ? *', '每年10月20号1点10分30秒触发任务')
        +table_row3('30 10 1 20 10 ? 2011', '2011年10月20号1点10分30秒触发任务')
        +table_row3('30 10 1 ? 10 * 2011', '2011年10月每天1点10分30秒触发任务')
        +table_row3('30 10 1 ? 10 SUN 2011', '2011年10月每周日1点10分30秒触发任务')
        +table_row3('15,30,45 * * * * ?', '每15秒，30秒，45秒时触发任务')
        +table_row3('15-45 * * * * ?', '15到45秒内，每秒都触发任务')
        +table_row3('15/5 * * * * ?', '每分钟的每15秒开始触发，每隔5秒触发一次')
        +table_row3('15-30/5 * * * * ?', '每分钟的15秒到30秒之间开始触发，每隔5秒触发一次')
        +table_row3('0 0/3 * * * ?', '每小时的第0分0秒开始，每三分钟触发一次')
        +table_row3('0 15 10 ? * MON-FRI', '星期一到星期五的10点15分0秒触发任务')
        +table_row3('0 15 10 L * ?', '每个月最后一天的10点15分0秒触发任务')
        +table_row3('0 15 10 LW * ?', '每个月最后一个工作日的10点15分0秒触发任务')
        +table_row3('0 15 10 ? * 5L', '每个月最后一个星期四的10点15分0秒触发任务')
        +table_row3('0 15 10 ? * 5#3', '每个月第三周的星期四的10点15分0秒触发任务')
